<?php
//TODO Z FUTURO: conflictos de sesiones al deslogearse con 2 navegadores abiertos
class class_login
{
	private $_db; 
	private $_version;
	function __construct()
	{
		$this->config();
	}
	
	private function config()
	{
		require_once("conexion.php");
		require_once("DataBase.php");
		$this->_version = $VERSION;
		$this->_db = new DataBase($SERVIDOR,$USUARIO,$PASSWORD,$BASE);
		mysql_query("SET NAMES utf8");
	}
	
	function method_Login($params, $error)
    {
        if (count($params) != 1) { $error->SetError(JsonRpcError_ParameterMismatch, "Expected 1 parameter; got " . count($params)); return $error; }
        $this->_db->setQuery("SELECT dni_usuario FROM usuarios WHERE usuario = '" . $params[0]->usuario . "' AND (password = '" . md5($params[0]->password) . "' OR password = '" . md5(strtolower($params[0]->password)) . "')");
        $this->_db->alter();
        if (mysql_error())
        {
        	$error->SetError(JsonRpcError_Unknown, mysql_error());
            return $error;
        }

        $result = $this->_db->loadResult();
        if (count($result) === 1)
        {
        	$_SESSION['dni_usuario'] = $result[0]->dni_usuario;
        	$_SESSION['usuario'] = $result[0]->usuario;
        	return true;
        }
        else
        {
        	return false;
        }
    }
    
	function method_Logout()
    {
       	$_SESSION['dni_usuario'] = null;
       	$_SESSION['usuario'] = null;
    }
	
	function method_Logueado($params, $error)
    {
    	if ($this->_version != $params[0]->version)
    	{
    		$error->SetError(JsonRpcError_Unknown, "\nUd. se encuentra ejecutando una version anterior del Software. Por favor, presione 2 veces seguidas la tecla F5 para cargar la nueva version.");
    		return $error;
    	}
    	
        if ($_SESSION['dni_usuario'])
        {
			return $_SESSION['dni_usuario'];
        }
        else
        {
        	return false;
        }
    }
    
	function method_get_perfil_usuario ($params, $error)
    {
    	if (count($params) != 0) { $error->SetError(JsonRpcError_ParameterMismatch, "Expected 0 parameter; got " . count($params)); return $error; }
    	
    	$this->_db->setQuery("SELECT dni_usuario, usuario, cod_tipo_usuario FROM usuarios WHERE dni_usuario = '" . $_SESSION["dni_usuario"] . "'");
        $this->_db->alter();
    	if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
    	$result = $this->_db->loadResult();
    	$result = $result[0];
    	return $result;
    }
    
    function method_getDatosUsuario($params, $error)
    {
    	if ($dni_usuario = $this->method_Logueado())
    	{
    		$this->_db->setQuery("SELECT dni_usuario, usuario, cod_tipo_usuario FROM usuarios WHERE dni_usuario = '" . $dni_usuario . "'");
    		$this->_db->alter();
			if (mysql_error())
			{
				$error->SetError(JsonRpcError_Unknown, mysql_error());
	            return $error;
			}
			
			$regs = $this->_db->loadResult();
			return $regs;
    	}
    	else
    	{
    		return false;
    	}
    }
    
	function method_set_password($params, $error)
    {
    	if (count($params) != 1) { $error->SetError(JsonRpcError_ParameterMismatch, "Expected 1 parameter; got " . count($params)); return $error; }
    	
    	$this->_db->setQuery("UPDATE usuarios SET password = '" . md5($params[0]->password) . "' WHERE dni_usuario = '" . $_SESSION['dni_usuario'] . "' AND password = '" . md5($params[0]->actual) . "' LIMIT 1");
    	$this->_db->alter();
    	if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
    	if (mysql_affected_rows() > 0)
    	{
    		return true;
    	}
    	else
    	{
    		return false;
    	}
    }

}
?>
